        <!DOCTYPE html>
        <html>
        <head>
                <meta charset="utf-8">
        <title>Manifold class / box2d_html Library / Dart Documentation</title>
        <link rel="stylesheet" type="text/css"
            href="../styles.css">
        <link href="http://fonts.googleapis.com/css?family=Open+Sans:400,600,700,800" rel="stylesheet" type="text/css">
        <link rel="shortcut icon" href="../favicon.ico">
        
        </head>
        <body data-library="box2d_html" data-type="Manifold">
        <div class="page">
        <div class="header">
          <a href="../index.html"><div class="logo"></div></a>
          <a href="../index.html">Dart Documentation</a>
         &rsaquo; <a href="../box2d_html.html">box2d_html</a> &rsaquo; <a href="../box2d_html/Manifold.html">Manifold</a>        <div id="search-box">
          <input type="search" name="q" id="q" autocomplete="off"
              class="search-input" placeholder="Search API">
        </div>
        
      </div>
      <div class="drop-down" id="drop-down"></div>
      
        <div class="nav">
        
</div>
<div class="content">
        <h2><strong>Manifold</strong>
          class
        </h2>
        
<button id="show-inherited" class="show-inherited">Hide inherited</button>
<div class="doc">
<p>A manifold for two touching convex shapes. Box2D has support for many kinds
of contact, such as clip pont versus plain with radius and point versus point
with radius (as with circles).</p>
<pre class="source">
class Manifold {
  /** The points of contact. */
  final List&lt;ManifoldPoint&gt; points;

  /**
   * The meaning of the localNormal depends on the type of this manifold. The
   * different meanings (or lack thereof) are outlined below.
   * Circles: not used.
   * faceA: The normal on polygonA.
   * faceB: The normal on polygonB.
   */
  final Vector localNormal;

  /**
   * The meaning of the localPoint depends on the type of this manifold. The
   * different meanings (or lack thereof) are outlined below.
   * Circles: The local center of circleA.
   * faceA: The center of faceA.
   * faceB: The center of faceB.
   */
  final Vector localPoint;

  /** The type of manifold. See [ManifoldType]. */
  int type;

  /** The number of manifold points. */
  int pointCount;

  /**
   * Creates a manifold with 0 points. It's point array should be full of
   * already instantiated ManifoldPoints.
   */
  Manifold() :
      points = new List&lt;ManifoldPoint&gt;(Settings.MAX_MANIFOLD_POINTS),
      localNormal = new Vector(),
      localPoint = new Vector(),
      pointCount = 0 {
    for (int i = 0; i &lt; Settings.MAX_MANIFOLD_POINTS; ++i)
      points[i] = new ManifoldPoint();
  }

  /**
   * Creates a new manifold that is a copy of the given manifold.
   */
  Manifold.copy(Manifold other) :
      points = new List&lt;ManifoldPoint&gt;(Settings.MAX_MANIFOLD_POINTS),
      localNormal = new Vector.copy(other.localNormal),
      localPoint = new Vector.copy(other.localPoint),
      pointCount = other.pointCount,
      type = other.type {
    for (int i = 0; i &lt; Settings.MAX_MANIFOLD_POINTS; ++i)
      points[i] = new ManifoldPoint.copy(other.points[i]);
  }

  /**
   * Sets this manifold to be a copy of the given manifold.
   */
  void setFrom(Manifold other) {
    for (int i = 0; i &lt; other.pointCount; ++i)
      points[i].setFrom(other.points[i]);

    type = other.type;
    localNormal.setFrom(other.localNormal);
    localPoint.setFrom(other.localPoint);
    pointCount = other.pointCount;
  }
}
</pre>
</div>
<div>
<h3>Constructors</h3>
<div class="method"><h4 id="Manifold">
<button class="show-code">Code</button>
new <strong>Manifold</strong>() <a class="anchor-link" href="#Manifold"
              title="Permalink to Manifold.Manifold">#</a></h4>
<div class="doc">
<p>Creates a manifold with 0 points. It's point array should be full of
already instantiated ManifoldPoints.</p>
<pre class="source">
Manifold() :
    points = new List&lt;ManifoldPoint&gt;(Settings.MAX_MANIFOLD_POINTS),
    localNormal = new Vector(),
    localPoint = new Vector(),
    pointCount = 0 {
  for (int i = 0; i &lt; Settings.MAX_MANIFOLD_POINTS; ++i)
    points[i] = new ManifoldPoint();
}
</pre>
</div>
</div>
<div class="method"><h4 id="Manifold.copy">
<button class="show-code">Code</button>
new <strong>Manifold.copy</strong>(<a href="../box2d_html/Manifold.html">Manifold</a> other) <a class="anchor-link" href="#Manifold.copy"
              title="Permalink to Manifold.Manifold.copy">#</a></h4>
<div class="doc">
<p>Creates a new manifold that is a copy of the given manifold.</p>
<pre class="source">
Manifold.copy(Manifold other) :
    points = new List&lt;ManifoldPoint&gt;(Settings.MAX_MANIFOLD_POINTS),
    localNormal = new Vector.copy(other.localNormal),
    localPoint = new Vector.copy(other.localPoint),
    pointCount = other.pointCount,
    type = other.type {
  for (int i = 0; i &lt; Settings.MAX_MANIFOLD_POINTS; ++i)
    points[i] = new ManifoldPoint.copy(other.points[i]);
}
</pre>
</div>
</div>
</div>
<div>
<h3>Properties</h3>
<div class="field"><h4 id="localNormal">
<button class="show-code">Code</button>
final <a href="../box2d_html/Vector.html">Vector</a>         <strong>localNormal</strong> <a class="anchor-link"
            href="#localNormal"
            title="Permalink to Manifold.localNormal">#</a>
        </h4>
        <div class="doc">
<p>The meaning of the localNormal depends on the type of this manifold. The
different meanings (or lack thereof) are outlined below.
Circles: not used.
faceA: The normal on polygonA.
faceB: The normal on polygonB.</p>
<pre class="source">
final Vector localNormal;
</pre>
</div>
</div>
<div class="field"><h4 id="localPoint">
<button class="show-code">Code</button>
final <a href="../box2d_html/Vector.html">Vector</a>         <strong>localPoint</strong> <a class="anchor-link"
            href="#localPoint"
            title="Permalink to Manifold.localPoint">#</a>
        </h4>
        <div class="doc">
<p>The meaning of the localPoint depends on the type of this manifold. The
different meanings (or lack thereof) are outlined below.
Circles: The local center of circleA.
faceA: The center of faceA.
faceB: The center of faceB.</p>
<pre class="source">
final Vector localPoint;
</pre>
</div>
</div>
<div class="field"><h4 id="pointCount">
<button class="show-code">Code</button>
int         <strong>pointCount</strong> <a class="anchor-link"
            href="#pointCount"
            title="Permalink to Manifold.pointCount">#</a>
        </h4>
        <div class="doc">
<p>The number of manifold points.</p>
<pre class="source">
int pointCount;
</pre>
</div>
</div>
<div class="field"><h4 id="points">
<button class="show-code">Code</button>
final List&lt;<a href="../box2d_html/ManifoldPoint.html">ManifoldPoint</a>&gt;         <strong>points</strong> <a class="anchor-link"
            href="#points"
            title="Permalink to Manifold.points">#</a>
        </h4>
        <div class="doc">
<p>The points of contact.</p>
<pre class="source">
final List&lt;ManifoldPoint&gt; points;
</pre>
</div>
</div>
<div class="field inherited"><h4 id="runtimeType">
<button class="show-code">Code</button>
final Type         <strong>runtimeType</strong> <a class="anchor-link"
            href="#runtimeType"
            title="Permalink to Manifold.runtimeType">#</a>
        </h4>
        <div class="inherited-from">inherited from Object </div><div class="doc">
<p>A representation of the runtime type of the object.</p>
<pre class="source">
external Type get runtimeType;
</pre>
</div>
</div>
<div class="field"><h4 id="type">
<button class="show-code">Code</button>
int         <strong>type</strong> <a class="anchor-link"
            href="#type"
            title="Permalink to Manifold.type">#</a>
        </h4>
        <div class="doc">
<p>The type of manifold. See <a class="crossref" href="../box2d_html/ManifoldType.html">ManifoldType</a>.</p>
<pre class="source">
int type;
</pre>
</div>
</div>
</div>
<div>
<h3>Operators</h3>
<div class="method inherited"><h4 id="==">
<button class="show-code">Code</button>
bool <strong>operator ==</strong>(other) <a class="anchor-link" href="#=="
              title="Permalink to Manifold.operator ==">#</a></h4>
<div class="inherited-from">inherited from Object </div><div class="doc">
<p>The equality operator.</p>
<p>The default behavior for all <code>Object</code>s is to return true if and
only if <code>this</code> and 
<span class="param">other</span> are the same object.</p>
<p>If a subclass overrides the equality operator it should override
the <code>hashCode</code> method as well to maintain consistency.</p>
<pre class="source">
bool operator ==(other) =&gt; identical(this, other);
</pre>
</div>
</div>
</div>
<div>
<h3>Methods</h3>
<div class="method inherited"><h4 id="hashCode">
<button class="show-code">Code</button>
int <strong>hashCode</strong>() <a class="anchor-link" href="#hashCode"
              title="Permalink to Manifold.hashCode">#</a></h4>
<div class="inherited-from">inherited from Object </div><div class="doc">
<p>Get a hash code for this object.</p>
<p>All objects have hash codes. Hash codes are guaranteed to be the
same for objects that are equal when compared using the equality
operator <code>==</code>. Other than that there are no guarantees about
the hash codes. They will not be consistent between runs and
there are no distribution guarantees.</p>
<p>If a subclass overrides <code>hashCode</code> it should override the
equality operator as well to maintain consistency.</p>
<pre class="source">
external int hashCode();
</pre>
</div>
</div>
<div class="method"><h4 id="Manifold">
<button class="show-code">Code</button>
new <strong>Manifold</strong>() <a class="anchor-link" href="#Manifold"
              title="Permalink to Manifold.Manifold">#</a></h4>
<div class="doc">
<p>Creates a manifold with 0 points. It's point array should be full of
already instantiated ManifoldPoints.</p>
<pre class="source">
Manifold() :
    points = new List&lt;ManifoldPoint&gt;(Settings.MAX_MANIFOLD_POINTS),
    localNormal = new Vector(),
    localPoint = new Vector(),
    pointCount = 0 {
  for (int i = 0; i &lt; Settings.MAX_MANIFOLD_POINTS; ++i)
    points[i] = new ManifoldPoint();
}
</pre>
</div>
</div>
<div class="method"><h4 id="Manifold.copy">
<button class="show-code">Code</button>
new <strong>Manifold.copy</strong>(<a href="../box2d_html/Manifold.html">Manifold</a> other) <a class="anchor-link" href="#Manifold.copy"
              title="Permalink to Manifold.Manifold.copy">#</a></h4>
<div class="doc">
<p>Creates a new manifold that is a copy of the given manifold.</p>
<pre class="source">
Manifold.copy(Manifold other) :
    points = new List&lt;ManifoldPoint&gt;(Settings.MAX_MANIFOLD_POINTS),
    localNormal = new Vector.copy(other.localNormal),
    localPoint = new Vector.copy(other.localPoint),
    pointCount = other.pointCount,
    type = other.type {
  for (int i = 0; i &lt; Settings.MAX_MANIFOLD_POINTS; ++i)
    points[i] = new ManifoldPoint.copy(other.points[i]);
}
</pre>
</div>
</div>
<div class="method inherited"><h4 id="noSuchMethod">
<button class="show-code">Code</button>
<strong>noSuchMethod</strong>(String name, List args) <a class="anchor-link" href="#noSuchMethod"
              title="Permalink to Manifold.noSuchMethod">#</a></h4>
<div class="inherited-from">inherited from Object </div><div class="doc">
<p><code>noSuchMethod</code> is invoked when users invoke a non-existant method
on an object. The name of the method and the arguments of the
invocation are passed to <code>noSuchMethod</code>. If <code>noSuchMethod</code>
returns a value, that value becomes the result of the original
invocation.</p>
<p>The default behavior of <code>noSuchMethod</code> is to throw a
<code>noSuchMethodError</code>.</p>
<pre class="source">
external Dynamic noSuchMethod(String name, List args);
</pre>
</div>
</div>
<div class="method inherited"><h4 id="Object">
<button class="show-code">Code</button>
const <strong>Object</strong>() <a class="anchor-link" href="#Object"
              title="Permalink to Manifold.Object">#</a></h4>
<div class="inherited-from">inherited from Object </div><div class="doc">
<p>Creates a new <code>Object</code> instance.</p>
<p><code>Object</code> instances have no meaningful state, and are only useful
through their identity. An <code>Object</code> instance is equal to itself
only.</p>
<pre class="source">
const Object();
</pre>
</div>
</div>
<div class="method"><h4 id="setFrom">
<button class="show-code">Code</button>
void <strong>setFrom</strong>(<a href="../box2d_html/Manifold.html">Manifold</a> other) <a class="anchor-link" href="#setFrom"
              title="Permalink to Manifold.setFrom">#</a></h4>
<div class="doc">
<p>Sets this manifold to be a copy of the given manifold.</p>
<pre class="source">
void setFrom(Manifold other) {
  for (int i = 0; i &lt; other.pointCount; ++i)
    points[i].setFrom(other.points[i]);

  type = other.type;
  localNormal.setFrom(other.localNormal);
  localPoint.setFrom(other.localPoint);
  pointCount = other.pointCount;
}
</pre>
</div>
</div>
<div class="method inherited"><h4 id="toString">
<button class="show-code">Code</button>
String <strong>toString</strong>() <a class="anchor-link" href="#toString"
              title="Permalink to Manifold.toString">#</a></h4>
<div class="inherited-from">inherited from Object </div><div class="doc">
<p>Returns a string representation of this object.</p>
<pre class="source">
external String toString();
</pre>
</div>
</div>
</div>
        </div>
        <div class="clear"></div>
        </div>
        
        <div class="footer">
          
        </div>
        <script async src="../client-live-nav.js"></script>
        </body></html>
        
